///******************************************************************************* // * Copyright (c) 2000, 2007 IBM Corporation and others. // * All rights reserved. This program and the accompanying materials // * are made available under the terms of the Eclipse Public License v1.0 // * which accompanies this distribution, and is available at // * http://www.eclipse.org/legal/epl-v10.html // * // * Contributors: // * IBM Corporation - initial API and implementation // *******************************************************************************/ //package org.eclipse.ui.tests.api; // //import java.util.ArrayList; //import java.util.Arrays; //import java.util.HashMap; //import java.util.HashSet; //import java.util.List; //import java.util.Set; // //import org.eclipse.core.commands.Command; //import org.eclipse.core.commands.ExecutionException; //import org.eclipse.core.commands.NotEnabledException; //import org.eclipse.core.commands.NotHandledException; //import org.eclipse.core.commands.ParameterizedCommand; //import org.eclipse.core.commands.common.NotDefinedException; //import org.eclipse.core.resources.IFile; //import org.eclipse.core.resources.IMarker; //import org.eclipse.core.resources.IProject; //import org.eclipse.core.resources.IResource; //import org.eclipse.core.runtime.IAdaptable; //import org.eclipse.jface.util.IPropertyChangeListener; //import org.eclipse.jface.util.PropertyChangeEvent; //import org.eclipse.ui.IEditorInput; //import org.eclipse.ui.IEditorPart; //import org.eclipse.ui.IEditorReference; //import org.eclipse.ui.IMemento; //import org.eclipse.ui.IPageLayout; //import org.eclipse.ui.IPerspectiveDescriptor; //import org.eclipse.ui.IPerspectiveRegistry; //import org.eclipse.ui.IViewPart; //import org.eclipse.ui.IViewReference; //import org.eclipse.ui.IWorkbenchPage; //import org.eclipse.ui.IWorkbenchWindow; //import org.eclipse.ui.IWorkingSet; //import org.eclipse.ui.IWorkingSetManager; //import org.eclipse.ui.PartInitException; //import org.eclipse.ui.PlatformUI; //import org.eclipse.ui.WorkbenchException; //import org.eclipse.ui.XMLMemento; //import org.eclipse.ui.commands.ICommandService; //import org.eclipse.ui.handlers.IHandlerService; //import org.eclipse.ui.ide.IDE; //import org.eclipse.ui.internal.SaveableHelper; //import org.eclipse.ui.internal.WorkbenchPage; //import org.eclipse.ui.internal.WorkbenchPlugin; //import org.eclipse.ui.internal.registry.IActionSetDescriptor; //import org.eclipse.ui.part.FileEditorInput; //import org.eclipse.ui.tests.PerspectiveState; //import org.eclipse.ui.tests.harness.util.CallHistory; //import org.eclipse.ui.tests.harness.util.EmptyPerspective; //import org.eclipse.ui.tests.harness.util.FileUtil; //import org.eclipse.ui.tests.harness.util.UITestCase; // //public class IWorkbenchPageTest extends UITestCase { // // private IWorkbenchPage fActivePage; // // private IWorkbenchWindow fWin; // // private IProject proj; // // public IWorkbenchPageTest(String testName) { // super(testName); // } // // protected void doSetUp() throws Exception { // super.doSetUp(); // fWin = openTestWindow(); // fActivePage = fWin.getActivePage(); // } // // protected void doTearDown() throws Exception { // super.doTearDown(); // if (proj != null) { // FileUtil.deleteProject(proj); // proj = null; // } // } // // /** // * Tests the new working set API. // * // * @since 3.2 // */ // public void testWorkingSets1() { // IWorkbenchPage page = fActivePage; // IWorkingSet[] sets = page.getWorkingSets(); // assertNotNull(sets); // assertEquals(0, sets.length); // // IWorkingSetManager manager = page.getWorkbenchWindow().getWorkbench() // .getWorkingSetManager(); // // IWorkingSet set1 = null, set2 = null; // try { // set1 = manager.createWorkingSet("w1", new IAdaptable[0]); // manager.addWorkingSet(set1); // set2 = manager.createWorkingSet("w2", new IAdaptable[0]); // manager.addWorkingSet(set2); // // page.setWorkingSets(new IWorkingSet[] { set1 }); // sets = page.getWorkingSets(); // // assertNotNull(sets); // assertEquals(1, sets.length); // assertEquals(set1, sets[0]); // // page.setWorkingSets(new IWorkingSet[0]); // sets = page.getWorkingSets(); // assertNotNull(sets); // assertEquals(0, sets.length); // // page.setWorkingSets(new IWorkingSet[] { set1, set2 }); // sets = page.getWorkingSets(); // // assertNotNull(sets); // assertEquals(2, sets.length); // Set realSet = new HashSet(Arrays.asList(sets)); // assertTrue(realSet.contains(set1)); // assertTrue(realSet.contains(set2)); // // page.setWorkingSets(new IWorkingSet[0]); // sets = page.getWorkingSets(); // assertNotNull(sets); // assertEquals(0, sets.length); // } finally { // if (set1 != null) // manager.removeWorkingSet(set1); // if (set2 != null) // manager.removeWorkingSet(set2); // } // } // // /** // * Tests the new working set API. // * // * @since 3.2 // */ // public void testWorkingSets2() { // fActivePage.setWorkingSets(null); // IWorkingSet[] sets = fActivePage.getWorkingSets(); // assertNotNull(sets); // assertEquals(0, sets.length); // } // // /** // * Tests the working set listeners. // * // * @since 3.2 // */ // public void testWorkingSets3() { // IWorkingSetManager manager = fActivePage.getWorkbenchWindow() // .getWorkbench().getWorkingSetManager(); // // IWorkingSet set1 = null; // final IWorkingSet[][] sets = new IWorkingSet[1][]; // sets[0] = new IWorkingSet[0]; // IPropertyChangeListener listener = new IPropertyChangeListener() { // // public void propertyChange(PropertyChangeEvent event) { // IWorkingSet[] oldSets = (IWorkingSet[]) event.getOldValue(); // assertTrue(Arrays.equals(sets[0], oldSets)); // sets[0] = (IWorkingSet[]) event.getNewValue(); // } // }; // try { // set1 = manager.createWorkingSet("w1", new IAdaptable[0]); // manager.addWorkingSet(set1); // // fActivePage.addPropertyChangeListener(listener); // // fActivePage.setWorkingSets(new IWorkingSet[] { set1 }); // fActivePage.setWorkingSets(new IWorkingSet[] {}); // fActivePage.setWorkingSets(new IWorkingSet[] { set1 }); // // sets[0] = fActivePage.getWorkingSets(); // // assertNotNull(sets[0]); // assertEquals(1, sets[0].length); // assertEquals(set1, sets[0][0]); // // } finally { // fActivePage.removePropertyChangeListener(listener); // if (set1 != null) // manager.removeWorkingSet(set1); // } // } // // /** // * Test the VIEW_VISIBLE parameter for showView, opening the view in the // * stack that does not contain the active view. Ensures that the created // * view is not the active part but is the top part in its stack. // */ // public void testView_VISIBLE2() { // WorkbenchPage page = (WorkbenchPage) fActivePage; // try { // page.setPerspective(WorkbenchPlugin.getDefault() // .getPerspectiveRegistry().findPerspectiveWithId( // "org.eclipse.ui.tests.api.ViewPerspective")); // // // create a part to be active // IViewPart activePart = page.showView(MockViewPart.ID3); // // IViewPart createdPart = page.showView(MockViewPart.ID2, null, // IWorkbenchPage.VIEW_VISIBLE); // // IViewPart[] stack = page.getViewStack(createdPart); // assertEquals(2, stack.length); // // assertEquals(createdPart, stack[0]); // assertEquals(page.findView(MockViewPart.ID), stack[1]); // // assertTrue(page.isPartVisible(createdPart)); // // assertEquals(activePart, page.getActivePart()); // } catch (PartInitException e) { // fail(e.getMessage()); // } // } // // /** // * openEditor(IEditorInput input, String editorId, boolean activate) // */ // public void testOpenEditor4() throws Throwable { // proj = FileUtil.createProject("testOpenEditor"); // final String id = MockEditorPart.ID1; // IEditorInput input = new FileEditorInput(FileUtil.createFile( // "test.mock1", proj)); // MockPartListener listener = new MockPartListener(); // fActivePage.addPartListener(listener); // CallHistory callTrace = listener.getCallHistory(); // // /* // * javadoc: The editor type is determined by mapping editorId to an // * editor extension registered with the workbench. javadoc: If activate == // * true the editor will be activated // */ // // open an editor with activation // // Start with a view active in order to verify that the editor gets // // activated // fActivePage.showView(IPageLayout.ID_PROBLEM_VIEW, null, // IWorkbenchPage.VIEW_ACTIVATE); // callTrace.clear(); // IEditorPart editor = IDE.openEditor(fActivePage, input, id, true); // assertEquals(editor.getEditorInput(), input); // assertEquals(editor.getSite().getId(), id); // assertEquals(hasEditor(editor), true); // assertEquals(fActivePage.getActiveEditor(), editor); // assertEquals(callTrace.contains("partActivated"), true); // // // we need another editor so that the editor under test can receive // // events. // // otherwise, events will be ignored. // IEditorPart extra = IDE.openEditor(fActivePage, FileUtil.createFile( // "aaaaa", proj)); // // // close the first editor after the second has opened; necessary for // // test to work with fix to PR 7743 // fActivePage.closeEditor(editor, false); // // // Start with a view active in order to verify that the editor does not // // get activated // // (note: regardless of the activate=false flag, the editor would always // // be activated // // if it is being opened in the same stack as the active editor. Making // // a view active // // initially tests the function of the activate flag) // fActivePage.showView(IPageLayout.ID_PROBLEM_VIEW, null, // IWorkbenchPage.VIEW_ACTIVATE); // callTrace.clear(); // // open an editor without activation // editor = IDE.openEditor(fActivePage, input, id, false); // // assertEquals(editor.getEditorInput(), input); // assertEquals(editor.getSite().getId(), id); // assertEquals(hasEditor(editor), true); // assertEquals(callTrace.contains("partActivated"), false); // assertEquals(callTrace.contains("partBroughtToTop"), true); // // fActivePage.activate(extra); // // /* // * javadoc: If this page already has an editor open on the target object // * that editor is brought to the front // */ // // open the editor under test second time without activation // fActivePage.showView(IPageLayout.ID_PROBLEM_VIEW, null, // IWorkbenchPage.VIEW_ACTIVATE); // callTrace.clear(); // assertEquals(IDE.openEditor(fActivePage, input, id, false), editor); // assertEquals(callTrace.contains("partBroughtToTop"), true); // assertEquals(callTrace.contains("partActivated"), false); // // // activate the other editor // fActivePage.activate(extra); // // /* // * javadoc: If activate == true the editor will be activated // */ // // open the editor under test second time with activation // fActivePage.showView(IPageLayout.ID_PROBLEM_VIEW, null, // IWorkbenchPage.VIEW_ACTIVATE); // callTrace.clear(); // assertEquals(IDE.openEditor(fActivePage, input, id, true), editor); // assertEquals(callTrace.contains("partBroughtToTop"), true); // assertEquals(callTrace.contains("partActivated"), true); // // /* // * javadoc: If activate == false but another editor in the same stack // * was active, the new editor will be activated regardless. // */ // // Close the old editor // fActivePage.closeEditor(editor, false); // // Ensure another editor in the stack is active // fActivePage.activate(extra); // callTrace.clear(); // // Verify that the editor is still activated // IDE.openEditor(fActivePage, input, id, false); // assertEquals(callTrace.contains("partBroughtToTop"), true); // assertEquals(callTrace.contains("partActivated"), true); // } // // /** // * tests both of the following: setEditorAreaVisible() isEditorAreaVisible() // */ // public void testGet_SetEditorAreaVisible() throws Throwable { // fActivePage.setEditorAreaVisible(true); // assertTrue(fActivePage.isEditorAreaVisible() == true); // // fActivePage.setEditorAreaVisible(false); // assertTrue(fActivePage.isEditorAreaVisible() == false); // } // // /** // * openEditor(IWorkbenchPage page, IFile input) // */ // public void testOpenEditor() throws Throwable { // proj = FileUtil.createProject("testOpenEditor"); // // /* // * javadoc: 1. The workbench editor registry is consulted to determine // * if an editor extension has been registered for the file type. If so, // * an instance of the editor extension is opened on the file // */ // IFile file = FileUtil.createFile("test.mock1", proj); // IEditorPart editor = IDE.openEditor(fActivePage, file); // // boolean foundEditor = hasEditor(editor); // assertEquals(foundEditor, true); // assertEquals(fActivePage.getActiveEditor(), editor); // assertEquals(editor.getSite().getId(), fWorkbench.getEditorRegistry() // .getDefaultEditor(file.getName()).getId()); // // /* // * javadoc: 2. Next, the native operating system will be consulted to // * determine if a native editor exists for the file type. If so, a new // * process is started and the native editor is opened on the file. // */ // // can not be tested // /* // * javadoc: 3. If all else fails the file will be opened in a default // * text editor. // */ // // file = FileUtil.createFile("a.null and void", proj); // editor = IDE.openEditor(fActivePage, file); // if (editor != null) {//If it opened an external editor skip it (Vista issue) // assertEquals(hasEditor(editor), true); // assertEquals(fActivePage.getActiveEditor(), editor); // assertEquals(editor.getSite().getId(), // "org.eclipse.ui.DefaultTextEditor"); // // // open another editor to take the focus away from the first editor // IDE // .openEditor(fActivePage, FileUtil.createFile("test.mock2", // proj)); // // /* // * javadoc: If this page already has an editor open on the target // * object that editor is activated // */ // // open the editor second time. // assertEquals(editor, IDE.openEditor(fActivePage, file)); // assertEquals(editor, fActivePage.getActiveEditor()); // } // } // // /** // * openEditor(IWorkbenchPage page, IFile input, String editorID) // */ // public void testOpenEditor2() throws Throwable { // proj = FileUtil.createProject("testOpenEditor"); // final IFile file = FileUtil.createFile("asfasdasdf", proj); // final String id = MockEditorPart.ID1; // // /* // * javadoc: The editor type is determined by mapping editorId to an // * editor extension registered with the workbench. // */ // IEditorPart editor = IDE.openEditor(fActivePage, file, id); // assertEquals(editor.getSite().getId(), id); // assertEquals(hasEditor(editor), true); // assertEquals(fActivePage.getActiveEditor(), editor); // // // open another editor to take the focus away from the first editor // IDE.openEditor(fActivePage, FileUtil.createFile("test.mock2", proj)); // // /* // * javadoc: If this page already has an editor open on the target object // * that editor is activated // */ // // open the first editor second time. // assertEquals(IDE.openEditor(fActivePage, file, id), editor); // assertEquals(fActivePage.getActiveEditor(), editor); // } // // /** // * openEditor(IEditorInput input,String editorId) // */ // public void testOpenEditor3() throws Throwable { // proj = FileUtil.createProject("testOpenEditor"); // final String id = MockEditorPart.ID1; // IEditorInput input = new FileEditorInput(FileUtil.createFile( // "test.mock1", proj)); // // /* // * javadoc: The editor type is determined by mapping editorId to an // * editor extension registered with the workbench // */ // IEditorPart editor = IDE.openEditor(fActivePage, input, id); // assertEquals(editor.getEditorInput(), input); // assertEquals(editor.getSite().getId(), id); // assertEquals(hasEditor(editor), true); // assertEquals(fActivePage.getActiveEditor(), editor); // // // open another editor to take the focus away from the first editor // IDE.openEditor(fActivePage, FileUtil.createFile("test.mock2", proj)); // // /* // * javadoc: If this page already has an editor open on the target object // * that editor is activated // */ // // open the first editor second time. // assertEquals(IDE.openEditor(fActivePage, input, id), editor); // assertEquals(fActivePage.getActiveEditor(), editor); // } // // /** // * openEditor(IMarker marker) // */ // public void testOpenEditor5() throws Throwable { // proj = FileUtil.createProject("testOpenEditor"); // IMarker marker = FileUtil.createFile("aa.mock2", proj).createMarker( // IMarker.TASK); // CallHistory callTrace; // // /* // * javadoc: the cursor and selection state of the editor is then updated // * from information recorded in the marker. // */ // // open the registered editor for the marker resource // IEditorPart editor = IDE.openEditor(fActivePage, marker); // callTrace = ((MockEditorPart) editor).getCallHistory(); // assertEquals(editor.getSite().getId(), MockEditorPart.ID2); // assertEquals(hasEditor(editor), true); // assertEquals(fActivePage.getActiveEditor(), editor); // assertEquals(callTrace.contains("gotoMarker"), true); // fActivePage.closeEditor(editor, false); // // /* // * javadoc: If the marker contains an EDITOR_ID_ATTR attribute the // * attribute value will be used to determine the editor type to be // * opened // */ // marker.setAttribute(IDE.EDITOR_ID_ATTR, MockEditorPart.ID1); // editor = IDE.openEditor(fActivePage, marker); // callTrace = ((MockEditorPart) editor).getCallHistory(); // assertEquals(editor.getSite().getId(), MockEditorPart.ID1); // assertEquals(hasEditor(editor), true); // assertEquals(fActivePage.getActiveEditor(), editor); // assertEquals(callTrace.contains("gotoMarker"), true); // // do not close the editor this time // // /* // * javdoc: If this page already has an editor open on the target object // * that editor is activated // */ // callTrace.clear(); // assertEquals(IDE.openEditor(fActivePage, marker), editor); // assertEquals(fActivePage.getActiveEditor(), editor); // assertEquals(callTrace.contains("gotoMarker"), true); // fActivePage.closeEditor(editor, false); // } // // /** // * openEditor(IMarker marker, boolean activate) // */ // public void testOpenEditor6() throws Throwable { // proj = FileUtil.createProject("testOpenEditor"); // IMarker marker = FileUtil.createFile("aa.mock2", proj).createMarker( // IMarker.TASK); // MockPartListener listener = new MockPartListener(); // fActivePage.addPartListener(listener); // CallHistory listenerCall = listener.getCallHistory(); // CallHistory editorCall; // // // we need another editor so that the editor under test can receive // // events. // // otherwise, events will be ignored. // IEditorPart extra = IDE.openEditor(fActivePage, FileUtil.createFile( // "aaaaa", proj)); // // /* // * javadoc: If activate == true the editor will be activated // */ // // open the registered editor for the marker resource with activation // IEditorPart editor = IDE.openEditor(fActivePage, marker, true); // editorCall = ((MockEditorPart) editor).getCallHistory(); // assertEquals(editor.getSite().getId(), MockEditorPart.ID2); // assertEquals(hasEditor(editor), true); // assertEquals(fActivePage.getActiveEditor(), editor); // // /* // * javadoc: the cursor and selection state of the editor is then updated // * from information recorded in the marker. // */ // assertEquals(editorCall.contains("gotoMarker"), true); // fActivePage.closeEditor(editor, false); // // fActivePage.activate(extra); // // // open the registered editor for the marker resource without activation // fActivePage.showView(IPageLayout.ID_PROBLEM_VIEW, null, // IWorkbenchPage.VIEW_ACTIVATE); // listenerCall.clear(); // editor = IDE.openEditor(fActivePage, marker, false); // editorCall = ((MockEditorPart) editor).getCallHistory(); // assertEquals(editor.getSite().getId(), MockEditorPart.ID2); // assertEquals(hasEditor(editor), true); // assertEquals(listenerCall.contains("partBroughtToTop"), true); // assertEquals(listenerCall.contains("partActivated"), false); // assertEquals(editorCall.contains("gotoMarker"), true); // fActivePage.closeEditor(editor, false); // // /* // * javadoc: If the marker contains an EDITOR_ID_ATTR attribute the // * attribute value will be used to determine the editor type to be // * opened // */ // String id = MockEditorPart.ID1; // marker.setAttribute(IDE.EDITOR_ID_ATTR, id); // // // open an editor with activation // listenerCall.clear(); // // editor = IDE.openEditor(fActivePage, marker, true); // editorCall = ((MockEditorPart) editor).getCallHistory(); // assertEquals(editor.getSite().getId(), id); // assertEquals(hasEditor(editor), true); // assertEquals(fActivePage.getActiveEditor(), editor); // assertEquals(editorCall.contains("gotoMarker"), true); // fActivePage.closeEditor(editor, false); // // fActivePage.activate(extra); // // // open an editor without activation // fActivePage.showView(IPageLayout.ID_PROBLEM_VIEW, null, // IWorkbenchPage.VIEW_ACTIVATE); // listenerCall.clear(); // editor = IDE.openEditor(fActivePage, marker, false); // editorCall = ((MockEditorPart) editor).getCallHistory(); // assertEquals(editor.getSite().getId(), id); // assertEquals(hasEditor(editor), true); // assertEquals(editorCall.contains("gotoMarker"), true); // assertEquals(listenerCall.contains("partActivated"), false); // assertEquals(listenerCall.contains("partBroughtToTop"), true); // // do not close the editor this time // // fActivePage.activate(extra); // /* // * javadoc: If this page already has an editor open on the target object // * that editor is brought to front Note: we need to make a non-editor // * active first or bringing the editor to front would activate it // */ // // open the editor second time without activation // fActivePage.showView(IPageLayout.ID_PROBLEM_VIEW, null, // IWorkbenchPage.VIEW_ACTIVATE); // listenerCall.clear(); // assertEquals(IDE.openEditor(fActivePage, marker, false), editor); // assertEquals(listenerCall.contains("partBroughtToTop"), true); // assertEquals(listenerCall.contains("partActivated"), false); // // fActivePage.activate(extra); // // /* // * javdoc: If activate == true the editor will be activated // */ // // open the editor second time with activation // listenerCall.clear(); // assertEquals(IDE.openEditor(fActivePage, marker, true), editor); // assertEquals(editorCall.contains("gotoMarker"), true); // assertEquals(listenerCall.contains("partBroughtToTop"), true); // assertEquals(listenerCall.contains("partActivated"), true); // // /* // * javadoc: If activate == false but another editor in the same stack // * was active, the new editor will be activated regardless. // */ // // Close the old editor // fActivePage.closeEditor(editor, false); // // Ensure another editor in the stack is active // fActivePage.activate(extra); // listenerCall.clear(); // // Verify that the editor is still activated // IDE.openEditor(fActivePage, marker, false); // assertEquals(listenerCall.contains("partBroughtToTop"), true); // assertEquals(listenerCall.contains("partActivated"), true); // } // // public void testGetPerspective() throws Throwable { // assertNotNull(fActivePage.getPerspective()); // // IWorkbenchPage page = fWin.openPage(EmptyPerspective.PERSP_ID, // getPageInput()); // assertEquals(EmptyPerspective.PERSP_ID, page.getPerspective().getId()); // } // // public void testSetPerspective() throws Throwable { // IPerspectiveDescriptor per = PlatformUI.getWorkbench() // .getPerspectiveRegistry().findPerspectiveWithId( // EmptyPerspective.PERSP_ID); // fActivePage.setPerspective(per); // assertEquals(per, fActivePage.getPerspective()); // } // // public void testGetLabel() { // assertNotNull(fActivePage.getLabel()); // } // // public void testGetInput() throws Throwable { // IAdaptable input = getPageInput(); // IWorkbenchPage page = fWin.openPage(input); // assertEquals(input, page.getInput()); // } // // public void testActivate() throws Throwable { // MockViewPart part = (MockViewPart) fActivePage // .showView(MockViewPart.ID); // MockViewPart part2 = (MockViewPart) fActivePage // .showView(MockViewPart.ID2); // // MockPartListener listener = new MockPartListener(); // fActivePage.addPartListener(listener); // fActivePage.activate(part); // // CallHistory callTrace; // // callTrace = part2.getCallHistory(); // callTrace.clear(); // fActivePage.activate(part2); // assertTrue(callTrace.contains("setFocus")); // assertTrue(listener.getCallHistory().contains("partActivated")); // // callTrace = part.getCallHistory(); // callTrace.clear(); // fActivePage.activate(part); // assertTrue(callTrace.contains("setFocus")); // assertTrue(listener.getCallHistory().contains("partActivated")); // } // // public void testBringToTop() throws Throwable { // proj = FileUtil.createProject("testOpenEditor"); // IEditorPart part = IDE.openEditor(fActivePage, FileUtil.createFile( // "a.mock1", proj)); // IEditorPart part2 = IDE.openEditor(fActivePage, FileUtil.createFile( // "b.mock1", proj)); // // MockPartListener listener = new MockPartListener(); // fActivePage.addPartListener(listener); // CallHistory callTrace = listener.getCallHistory(); // // // at this point, part2 is active // fActivePage.bringToTop(part); // assertEquals(callTrace.contains("partBroughtToTop"), true); // // callTrace.clear(); // fActivePage.bringToTop(part2); // assertEquals(callTrace.contains("partBroughtToTop"), true); // } // // public void testGetWorkbenchWindow() { // /* // * Commented out because until test case can be updated to work with new // * window/page/perspective implementation // * // * assertEquals(fActivePage.getWorkbenchWindow(), fWin); IWorkbenchPage // * page = openTestPage(fWin); assertEquals(page.getWorkbenchWindow(), // * fWin); // */ // } // // public void testShowView() throws Throwable { // /* // * javadoc: Shows a view in this page and give it focus // */ // MockViewPart view = (MockViewPart) fActivePage // .showView(MockViewPart.ID); // assertNotNull(view); // assertTrue(view.getCallHistory().verifyOrder( // new String[] { "init", "createPartControl", "setFocus" })); // // fActivePage.showView(MockViewPart.ID2); // // /* // * javadoc: If the view is already visible, it is given focus // */ // CallHistory callTrace = view.getCallHistory(); // callTrace.clear(); // assertEquals(fActivePage.showView(MockViewPart.ID), view); // assertEquals(callTrace.contains("setFocus"), true); // } // // /** // * Tests showing multi-instance views (docked normally). // */ // public void testShowViewMult() throws Throwable { // /* // * javadoc: Shows the view identified by the given view id and secondary // * id in this page and gives it focus. This allows multiple instances of // * a particular view to be created. They are disambiguated using the // * secondary id. // */ // MockViewPart view = (MockViewPart) fActivePage // .showView(MockViewPart.IDMULT); // assertNotNull(view); // assertTrue(view.getCallHistory().verifyOrder( // new String[] { "init", "createPartControl", "setFocus" })); // MockViewPart view2 = (MockViewPart) fActivePage.showView( // MockViewPart.IDMULT, "2", IWorkbenchPage.VIEW_ACTIVATE); // assertNotNull(view2); // assertTrue(view2.getCallHistory().verifyOrder( // new String[] { "init", "createPartControl", "setFocus" })); // assertTrue(!view.equals(view2)); // MockViewPart view3 = (MockViewPart) fActivePage.showView( // MockViewPart.IDMULT, "3", IWorkbenchPage.VIEW_ACTIVATE); // assertNotNull(view3); // assertTrue(view3.getCallHistory().verifyOrder( // new String[] { "init", "createPartControl", "setFocus" })); // assertTrue(!view.equals(view3)); // assertTrue(!view2.equals(view3)); // // /* // * javadoc: If there is a view identified by the given view id and // * secondary id already open in this page, it is given focus. // */ // CallHistory callTrace = view.getCallHistory(); // callTrace.clear(); // assertEquals(fActivePage.showView(MockViewPart.IDMULT), view); // assertEquals(callTrace.contains("setFocus"), true); // CallHistory callTrace2 = view2.getCallHistory(); // callTrace.clear(); // callTrace2.clear(); // assertEquals(fActivePage.showView(MockViewPart.IDMULT, "2", // IWorkbenchPage.VIEW_ACTIVATE), view2); // assertEquals(callTrace2.contains("setFocus"), true); // assertEquals(callTrace.contains("setFocus"), false); // CallHistory callTrace3 = view3.getCallHistory(); // callTrace.clear(); // callTrace2.clear(); // callTrace3.clear(); // assertEquals(fActivePage.showView(MockViewPart.IDMULT, "3", // IWorkbenchPage.VIEW_ACTIVATE), view3); // assertEquals(callTrace3.contains("setFocus"), true); // assertEquals(callTrace.contains("setFocus"), false); // assertEquals(callTrace2.contains("setFocus"), false); // // /* // * javadoc: If a secondary id is given, the view must allow multiple // * instances by having specified allowMultiple="true" in its extension. // */ // boolean exceptionThrown = false; // try { // fActivePage.showView(MockViewPart.ID, "2", // IWorkbenchPage.VIEW_ACTIVATE); // } catch (PartInitException e) { // assertEquals(e.getMessage().indexOf("mult") != -1, true); // exceptionThrown = true; // } // assertEquals(exceptionThrown, true); // } // // /** // * Tests showing multi-instance views (as fast views). This is a regression // * test for bug 76669 - [Perspectives] NullPointerException in // * Perspective.getFastViewWidthRatio() // */ // public void testShowViewMultFast() throws Throwable { // /* // * javadoc: Shows the view identified by the given view id and secondary // * id in this page and gives it focus. This allows multiple instances of // * a particular view to be created. They are disambiguated using the // * secondary id. // */ // MockViewPart view = (MockViewPart) fActivePage // .showView(MockViewPart.IDMULT); // assertNotNull(view); // assertTrue(view.getCallHistory().verifyOrder( // new String[] { "init", "createPartControl", "setFocus" })); // MockViewPart view2 = (MockViewPart) fActivePage.showView( // MockViewPart.IDMULT, "2", IWorkbenchPage.VIEW_ACTIVATE); // assertNotNull(view2); // assertTrue(view2.getCallHistory().verifyOrder( // new String[] { "init", "createPartControl", "setFocus" })); // assertTrue(!view.equals(view2)); // // WorkbenchPage page = (WorkbenchPage) fActivePage; // IViewReference ref = (IViewReference) page.getReference(view); // IViewReference ref2 = (IViewReference) page.getReference(view2); // page.addFastView(ref); // page.addFastView(ref2); // // page.activate(view); // assertEquals(view, page.getActivePart()); // // page.activate(view2); // assertEquals(view2, page.getActivePart()); // } // // /** // * Tests saving the page state when there is a fast view that is also a // * multi-instance view. This is a regression test for bug 76669 - // * [Perspectives] NullPointerException in // * Perspective.getFastViewWidthRatio() // */ // public void testBug76669() throws Throwable { // MockViewPart view = (MockViewPart) fActivePage // .showView(MockViewPart.IDMULT); // MockViewPart view2 = (MockViewPart) fActivePage.showView( // MockViewPart.IDMULT, "2", IWorkbenchPage.VIEW_ACTIVATE); // // WorkbenchPage page = (WorkbenchPage) fActivePage; // IViewReference ref = (IViewReference) page.getReference(view); // IViewReference ref2 = (IViewReference) page.getReference(view2); // page.addFastView(ref); // page.addFastView(ref2); // // IMemento memento = XMLMemento.createWriteRoot("page"); // page.saveState(memento); // IMemento persps = memento.getChild("perspectives"); // IMemento persp = persps.getChildren("perspective")[0]; // IMemento[] fastViews = persp.getChild("fastViews").getChildren("view"); // assertEquals(2, fastViews.length); // } // // public void testFindView() throws Throwable { // String id = MockViewPart.ID3; // // id of valid, but not open view // assertNull(fActivePage.findView(id)); // // IViewPart view = fActivePage.showView(id); // assertEquals(fActivePage.findView(id), view); // // // close view // fActivePage.hideView(view); // assertNull(fActivePage.findView(id)); // } // // public void testFindViewReference() throws Throwable { // fActivePage.getWorkbenchWindow().getWorkbench().showPerspective( // SessionPerspective.ID, fActivePage.getWorkbenchWindow()); // assertNull(fActivePage.findViewReference(MockViewPart.ID4)); // // fActivePage.showView(MockViewPart.ID4); // assertNotNull(fActivePage.findViewReference(MockViewPart.ID4)); // } // // public void testGetViews() throws Throwable { // int totalBefore = fActivePage.getViewReferences().length; // // IViewPart view = fActivePage.showView(MockViewPart.ID2); // assertEquals(hasView(view), true); // assertEquals(fActivePage.getViewReferences().length, totalBefore + 1); // // fActivePage.hideView(view); // assertEquals(hasView(view), false); // assertEquals(fActivePage.getViewReferences().length, totalBefore); // } // // public void testHideViewWithPart() throws Throwable { // // test that nothing bad happens with a null parameter // try { // fActivePage.hideView((IViewPart) null); // } catch (RuntimeException e) { // fail(e.getMessage()); // } // // IViewPart view = fActivePage.showView(MockViewPart.ID3); // // fActivePage.hideView(view); // CallHistory callTrace = ((MockViewPart) view).getCallHistory(); // assertTrue(callTrace.contains("dispose")); // } // // public void testHideViewWithReference() throws Throwable { // // test that nothing bad happens with a null parameter // try { // fActivePage.hideView((IViewReference) null); // } catch (RuntimeException e) { // fail(e.getMessage()); // } // // IViewPart view = fActivePage.showView(MockViewPart.ID4); // IViewReference ref = fActivePage.findViewReference(MockViewPart.ID4); // fActivePage.hideView(ref); // CallHistory callTrace = ((MockViewPart) view).getCallHistory(); // assertTrue(callTrace.contains("dispose")); // // } // // public void testHideSaveableView() throws Throwable { // String viewId = SaveableMockViewPart.ID; // SaveableMockViewPart view = (SaveableMockViewPart) fActivePage // .showView(viewId); // fActivePage.hideView(view); // CallHistory callTrace = view.getCallHistory(); // assertTrue(callTrace.contains("isDirty")); // assertTrue(callTrace.contains("dispose")); // assertEquals(fActivePage.findView(viewId), null); // // try { // SaveableHelper.testSetAutomatedResponse(1); // No // view = (SaveableMockViewPart) fActivePage.showView(viewId); // view.setDirty(true); // fActivePage.hideView(view); // callTrace = view.getCallHistory(); // assertTrue(callTrace.contains("isDirty")); // assertFalse(callTrace.contains("doSave")); // assertTrue(callTrace.contains("dispose")); // assertEquals(fActivePage.findView(viewId), null); // // SaveableHelper.testSetAutomatedResponse(2); // Cancel // view = (SaveableMockViewPart) fActivePage.showView(viewId); // view.setDirty(true); // fActivePage.hideView(view); // callTrace = view.getCallHistory(); // assertTrue(callTrace.contains("isDirty")); // assertFalse(callTrace.contains("doSave")); // assertFalse(callTrace.contains("dispose")); // assertEquals(fActivePage.findView(viewId), view); // // SaveableHelper.testSetAutomatedResponse(0); // Yes // view = (SaveableMockViewPart) fActivePage.showView(viewId); // view.setDirty(true); // fActivePage.hideView(view); // callTrace = view.getCallHistory(); // assertTrue(callTrace.contains("isDirty")); // assertTrue(callTrace.contains("doSave")); // assertTrue(callTrace.contains("dispose")); // assertEquals(fActivePage.findView(viewId), null); // // // don't leave the view showing, or the UI will block on window // // close // } finally { // SaveableHelper.testSetAutomatedResponse(-1); // restore default // // (prompt) // } // } // // /** // * Tests that a close will fall back to the default if the view returns // * ISaveable2.DEFAULT. // * // * @throws Throwable // */ // public void testCloseWithSaveNeeded() throws Throwable { // String viewId = UserSaveableMockViewPart.ID; // UserSaveableMockViewPart view = (UserSaveableMockViewPart) fActivePage // .showView(viewId); // fActivePage.hideView(view); // // UserSaveableMockViewPart view2 = null; // // CallHistory callTrace = view.getCallHistory(); // assertTrue(callTrace.contains("isDirty")); // assertTrue(callTrace.contains("dispose")); // assertEquals(fActivePage.findView(UserSaveableMockViewPart.ID), null); // // try { // SaveableHelper.testSetAutomatedResponse(3); // DEFAULT // view = (UserSaveableMockViewPart) fActivePage.showView(viewId); // view.setDirty(true); // view2 = (UserSaveableMockViewPart) fActivePage.showView(viewId, // "2", IWorkbenchPage.VIEW_ACTIVATE); // assertNotNull(view2); // view2.setDirty(true); // // WorkbenchPage page = (WorkbenchPage) fActivePage; // page.getEditorManager().saveAll(true, false, false); // // assertFalse(view.isDirty()); // assertFalse(view2.isDirty()); // // callTrace = view.getCallHistory(); // fActivePage.hideView(view); // fActivePage.hideView(view2); // // assertTrue(callTrace.contains("isDirty")); // assertTrue(callTrace.contains("doSave")); // assertEquals(fActivePage.findView(viewId), null); // // // don't leave the view showing, or the UI will block on window // // close // } finally { // SaveableHelper // .testSetAutomatedResponse(SaveableHelper.USER_RESPONSE); // restore // // default // // (prompt) // } // } // // /** // * Tests that a close will fall back to the default if the view returns // * ISaveable2.DEFAULT. // * // * @throws Throwable // */ // public void testSaveEffectsSharedModel() throws Throwable { // String viewId = UserSaveableSharedViewPart.ID; // UserSaveableSharedViewPart view = null; // // UserSaveableSharedViewPart view2 = null; // // assertEquals(fActivePage.findView(UserSaveableSharedViewPart.ID), null); // // try { // SaveableHelper.testSetAutomatedResponse(3); // DEFAULT // UserSaveableSharedViewPart.SharedModel model = new UserSaveableSharedViewPart.SharedModel(); // view = (UserSaveableSharedViewPart) fActivePage.showView(viewId); // view.setSharedModel(model); // // view2 = (UserSaveableSharedViewPart) fActivePage.showView(viewId, // "2", IWorkbenchPage.VIEW_ACTIVATE); // assertNotNull(view2); // view2.setSharedModel(model); // // WorkbenchPage page = (WorkbenchPage) fActivePage; // page.getEditorManager().saveAll(true, false, false); // // assertFalse(view.isDirty()); // assertFalse(view2.isDirty()); // // CallHistory callTrace = view.getCallHistory(); // CallHistory call2 = view2.getCallHistory(); // // assertTrue(callTrace.contains("isDirty")); // assertTrue(call2.contains("isDirty")); // assertTrue("At least one should call doSave", callTrace // .contains("doSave") // || call2.contains("doSave")); // assertFalse("Both should not call doSave", callTrace // .contains("doSave") // && call2.contains("doSave")); // // // don't leave the view showing, or the UI will block on window // // close // } finally { // SaveableHelper // .testSetAutomatedResponse(SaveableHelper.USER_RESPONSE); // restore // // default // // (prompt) // fActivePage.hideView(view); // fActivePage.hideView(view2); // } // } // // public void testClose() throws Throwable { // IWorkbenchPage page = openTestPage(fWin); // // proj = FileUtil.createProject("testOpenEditor"); // final IFile file = FileUtil.createFile("aaa.mock1", proj); // IEditorPart editor = IDE.openEditor(page, file); // CallHistory callTrace = ((MockEditorPart) editor).getCallHistory(); // callTrace.clear(); // // /* // * javadoc: If the page has open editors with unsaved content and save // * is true, the user will be given the opportunity to save them // */ // assertEquals(page.close(), true); // assertEquals(callTrace // .verifyOrder(new String[] { "isDirty", "dispose" }), true); // assertEquals(fWin.getActivePage(), fActivePage); // } // // public void testCloseEditor() throws Throwable { // proj = FileUtil.createProject("testOpenEditor"); // final IFile file = FileUtil.createFile("test.mock1", proj); // IEditorPart editor; // CallHistory callTrace; // MockEditorPart mock; // // /* // * javadoc: Parameters: save - true to save the editor contents if // * required (recommended) // */ // // create a clean editor that needs to be saved on closing // editor = IDE.openEditor(fActivePage, file); // mock = (MockEditorPart) editor; // mock.setSaveNeeded(true); // callTrace = mock.getCallHistory(); // callTrace.clear(); // // close the editor with save confirmation // assertEquals(fActivePage.closeEditor(editor, true), true); // assertEquals(callTrace // .verifyOrder(new String[] { "isDirty", "dispose" }), true); // // /* // * javadoc: If the editor has unsaved content and save is true, the user // * will be given the opportunity to save it. // */ // // can't be tested // /* // * javadoc: Parameters: save - false to discard any unsaved changes // */ // // create a dirty editor // editor = IDE.openEditor(fActivePage, file); // mock = (MockEditorPart) editor; // mock.setDirty(true); // mock.setSaveNeeded(true); // callTrace = mock.getCallHistory(); // callTrace.clear(); // // close the editor and discard changes // assertEquals(fActivePage.closeEditor(editor, false), true); // assertEquals(callTrace.contains("isSaveOnCloseNeeded"), false); // /* // * It is possible that some action may query the isDirty value of the // * editor to update its enabled state. There is nothing wrong in doing // * that, so do not test for no isDirty call here. // * // * assertEquals(callTrace.contains( "isDirty"), false); // */ // assertEquals(callTrace.contains("doSave"), false); // assertEquals(callTrace.contains("dispose"), true); // } // // public void testCloseEditors() throws Throwable { // int total = 5; // final IFile[] files = new IFile[total]; // IEditorPart[] editors = new IEditorPart[total]; // IEditorReference[] editorRefs = new IEditorReference[total]; // CallHistory[] callTraces = new CallHistory[total]; // MockEditorPart[] mocks = new MockEditorPart[total]; // // proj = FileUtil.createProject("testCloseEditors"); // for (int i = 0; i < total; i++) // files[i] = FileUtil.createFile(i + ".mock2", proj); // // /* // * javadoc: If the page has open editors with unsaved content and save // * is true, the user will be given the opportunity to save them. // */ // // close all clean editors with confirmation // for (int i = 0; i < total; i++) { // editors[i] = IDE.openEditor(fActivePage, files[i]); // callTraces[i] = ((MockEditorPart) editors[i]).getCallHistory(); // } // // editorRefs = fActivePage.getEditorReferences(); // assertEquals(fActivePage.closeEditors(editorRefs, true), true); // for (int i = 0; i < total; i++) { // assertEquals(callTraces[i].contains("isDirty"), true); // assertEquals(callTraces[i].contains("doSave"), false); // callTraces[i].clear(); // } // // // close all dirty editors with confirmation // // can't be tested // // // close all dirty editors discarding them // for (int i = 0; i < total; i++) { // editors[i] = IDE.openEditor(fActivePage, files[i]); // mocks[i] = (MockEditorPart) editors[i]; // mocks[i].setDirty(true); // callTraces[i] = mocks[i].getCallHistory(); // } // editorRefs = fActivePage.getEditorReferences(); // assertEquals(fActivePage.closeEditors(editorRefs, false), true); // for (int i = 0; i < total; i++) { // assertEquals(callTraces[i].contains("doSave"), false); // } // // // close empty array of editors // total = 1; // for (int i = 0; i < total; i++) { // editors[i] = IDE.openEditor(fActivePage, files[i]); // mocks[i] = (MockEditorPart) editors[i]; // mocks[i].setDirty(true); // callTraces[i] = mocks[i].getCallHistory(); // } // // empty array test // editorRefs = new IEditorReference[0]; // assertEquals(fActivePage.closeEditors(editorRefs, true), true); // for (int i = 0; i < total; i++) { // assertEquals(callTraces[i].contains("isDirty"), true); // assertEquals(callTraces[i].contains("doSave"), false); // callTraces[i].clear(); // } // // // close the last remaining editor, with save=false // editorRefs = fActivePage.getEditorReferences(); // fActivePage.closeEditors(editorRefs, false); // } // // public void testCloseAllEditors() throws Throwable { // int total = 5; // final IFile[] files = new IFile[total]; // IEditorPart[] editors = new IEditorPart[total]; // CallHistory[] callTraces = new CallHistory[total]; // MockEditorPart[] mocks = new MockEditorPart[total]; // // proj = FileUtil.createProject("testOpenEditor"); // for (int i = 0; i < total; i++) // files[i] = FileUtil.createFile(i + ".mock2", proj); // // /* // * javadoc: If the page has open editors with unsaved content and save // * is true, the user will be given the opportunity to save them. // */ // // close all clean editors with confirmation // for (int i = 0; i < total; i++) { // editors[i] = IDE.openEditor(fActivePage, files[i]); // callTraces[i] = ((MockEditorPart) editors[i]).getCallHistory(); // } // assertEquals(fActivePage.closeAllEditors(true), true); // for (int i = 0; i < total; i++) { // assertEquals(callTraces[i].contains("isDirty"), true); // assertEquals(callTraces[i].contains("doSave"), false); // callTraces[i].clear(); // } // // // close all dirty editors with confirmation // // can't be tested // // // close all dirty editors discarding them // for (int i = 0; i < total; i++) { // editors[i] = IDE.openEditor(fActivePage, files[i]); // mocks[i] = (MockEditorPart) editors[i]; // mocks[i].setDirty(true); // callTraces[i] = mocks[i].getCallHistory(); // } // assertEquals(fActivePage.closeAllEditors(false), true); // for (int i = 0; i < total; i++) { // assertEquals(callTraces[i].contains("doSave"), false); // } // } // // public void testSaveEditor() throws Throwable { // proj = FileUtil.createProject("testOpenEditor"); // final IFile file = FileUtil.createFile("test.mock1", proj); // IEditorPart editor; // CallHistory callTrace; // MockEditorPart mock; // // // create a clean editor // editor = IDE.openEditor(fActivePage, file); // mock = (MockEditorPart) editor; // callTrace = mock.getCallHistory(); // callTrace.clear(); // // /* // * javadoc: Saves the contents of the given editor if dirty. If not, // * this method returns without effect // */ // // save the clean editor with confirmation // assertEquals(fActivePage.saveEditor(editor, true), true); // assertEquals(callTrace.contains("isDirty"), true); // assertEquals(callTrace.contains("doSave"), false); // // /* // * javadoc: If confirm is true the user is prompted to confirm the // * command. // */ // // can't be tested // /* // * javadoc: Otherwise, the save happens without prompt. // */ // // save the clean editor without confirmation // assertEquals(fActivePage.saveEditor(editor, false), true); // assertEquals(callTrace.contains("isDirty"), true); // assertEquals(callTrace.contains("doSave"), false); // // // save the dirty editor without confirmation // mock.setDirty(true); // callTrace.clear(); // assertEquals(fActivePage.saveEditor(editor, false), true); // assertEquals(callTrace // .verifyOrder(new String[] { "isDirty", "doSave" }), true); // } // // public void testIDESaveAllEditors() throws Throwable { // int total = 3; // // final IFile[] files = new IFile[total]; // IEditorPart[] editors = new IEditorPart[total]; // CallHistory[] callTraces = new CallHistory[total]; // MockEditorPart[] mocks = new MockEditorPart[total]; // // proj = FileUtil.createProject("testOpenEditor"); // for (int i = 0; i < total; i++) { // files[i] = FileUtil.createFile(i + ".mock2", proj); // editors[i] = IDE.openEditor(fActivePage, files[i]); // mocks[i] = (MockEditorPart) editors[i]; // callTraces[i] = mocks[i].getCallHistory(); // } // // /* // * javadoc: If there are no dirty editors this method returns without // * effect. javadoc: If confirm is true the user is prompted to confirm // * the command // */ // // save all clean editors with confirmation // assertEquals(IDE.saveAllEditors(new IResource[] { proj }, true), true); // for (int i = 0; i < total; i++) { // assertEquals(callTraces[i].contains("isDirty"), true); // assertEquals(callTraces[i].contains("doSave"), false); // callTraces[i].clear(); // } // // // save all dirty editors with confirmation can't be tested // // /* // * javadoc: Parameters: confirm - false to save unsaved changes without // * asking // */ // // save all clean editors without confirmation // assertEquals(IDE.saveAllEditors(new IResource[] { proj }, false), true); // for (int i = 0; i < total; i++) { // assertEquals(callTraces[i].contains("isDirty"), true); // assertEquals(callTraces[i].contains("doSave"), false); // callTraces[i].clear(); // } // // // save all dirty editors with resource that IS NOT a parent // // of the contents of the dirty editors without confirmation, this // // should not // // save any as they are not parented by the resource provided // for (int i = 0; i < total; i++) // mocks[i].setDirty(true); // // IResource emptyProj = FileUtil // .createProject("testOpenEditorEmptyProject"); // assertEquals(IDE.saveAllEditors(new IResource[] { emptyProj }, false), // true); // for (int i = 0; i < total; i++) { // // the editors were not in the empty project hence still dirty // assertEquals(mocks[i].isDirty(), true); // callTraces[i].clear(); // } // // // save all dirty editors with resource that IS a parent // // of the contents of the editors without confirmation, this should // // save them as they are parented by the resource provided // assertEquals(IDE.saveAllEditors(new IResource[] { proj }, false), true); // for (int i = 0; i < total; i++) { // // the editors were not in the empty project hence still dirty // assertEquals(mocks[i].isDirty(), false); // assertEquals(callTraces[i].contains("isDirty"), true); // assertEquals(callTraces[i].contains("doSave"), true); // callTraces[i].clear(); // } // // // save all dirty editors with resource that IS NOT a parent // // of the contents of the dirty editors without confirmation, this // // should not // // save any as they are not parented by the resource provided // for (int i = 0; i < total; i++) // mocks[i].setDirty(true); // assertEquals(IDE.saveAllEditors(new IResource[] {}, false), true); // for (int i = 0; i < total; i++) { // // the editors were not in the empty project hence still dirty // assertEquals(mocks[i].isDirty(), true); // callTraces[i].clear(); // } // // // clear the dirty state so the tearDown does not open a confirm dialog. // for (int i = 0; i < total; i++) // mocks[i].setDirty(false); // } // // public void testSaveAllEditors() throws Throwable { // int total = 3; // // final IFile[] files = new IFile[total]; // IEditorPart[] editors = new IEditorPart[total]; // CallHistory[] callTraces = new CallHistory[total]; // MockEditorPart[] mocks = new MockEditorPart[total]; // // proj = FileUtil.createProject("testOpenEditor"); // for (int i = 0; i < total; i++) { // files[i] = FileUtil.createFile(i + ".mock2", proj); // editors[i] = IDE.openEditor(fActivePage, files[i]); // mocks[i] = (MockEditorPart) editors[i]; // callTraces[i] = mocks[i].getCallHistory(); // } // // /* // * javadoc: If there are no dirty editors this method returns without // * effect. javadoc: If confirm is true the user is prompted to confirm // * the command // */ // // save all clean editors with confirmation // assertEquals(fActivePage.saveAllEditors(true), true); // for (int i = 0; i < total; i++) { // assertEquals(callTraces[i].contains("isDirty"), true); // assertEquals(callTraces[i].contains("doSave"), false); // callTraces[i].clear(); // } // // // save all dirty editors with confirmation can't be tested // // /* // * javadoc: Parameters: confirm - false to save unsaved changes without // * asking // */ // // save all clean editors without confirmation // assertEquals(fActivePage.saveAllEditors(false), true); // for (int i = 0; i < total; i++) { // assertEquals(callTraces[i].contains("isDirty"), true); // assertEquals(callTraces[i].contains("doSave"), false); // callTraces[i].clear(); // } // // // save all dirty editors without confirmation // for (int i = 0; i < total; i++) // mocks[i].setDirty(true); // assertEquals(fActivePage.saveAllEditors(false), true); // for (int i = 0; i < total; i++) // assertEquals(callTraces[i].verifyOrder(new String[] { "isDirty", // "doSave" }), true); // } // // public void testGetEditors() throws Throwable { // proj = FileUtil.createProject("testOpenEditor"); // int totalBefore = fActivePage.getEditorReferences().length; // int num = 3; // IEditorPart[] editors = new IEditorPart[num]; // // for (int i = 0; i < num; i++) { // editors[i] = IDE.openEditor(fActivePage, FileUtil.createFile(i // + ".mock2", proj)); // assertEquals(hasEditor(editors[i]), true); // } // assertEquals(fActivePage.getEditorReferences().length, totalBefore // + num); // // fActivePage.closeEditor(editors[0], false); // assertEquals(hasEditor(editors[0]), false); // assertEquals(fActivePage.getEditorReferences().length, totalBefore // + num - 1); // // fActivePage.closeAllEditors(false); // assertEquals(fActivePage.getEditorReferences().length, 0); // } // // public void testShowActionSet() { // String id = MockActionDelegate.ACTION_SET_ID; // WorkbenchPage page = (WorkbenchPage) fActivePage; // // int totalBefore = page.getActionSets().length; // fActivePage.showActionSet(id); // // IActionSetDescriptor[] sets = ((WorkbenchPage) fActivePage) // .getActionSets(); // boolean found = false; // for (int i = 0; i < sets.length; i++) // if (id.equals(sets[i].getId())) // found = true; // assertEquals(found, true); // // // check that the method does not add an invalid action set to itself // id = IConstants.FakeID; // fActivePage.showActionSet(id); // // sets = ((WorkbenchPage) fActivePage).getActionSets(); // found = false; // for (int i = 0; i < sets.length; i++) // if (id.equals(sets[i].getId())) // found = true; // assertEquals(found, false); // assertEquals(page.getActionSets().length, totalBefore + 1); // } // // public void testHideActionSet() { // WorkbenchPage page = (WorkbenchPage) fActivePage; // int totalBefore = page.getActionSets().length; // // String id = MockWorkbenchWindowActionDelegate.SET_ID; // fActivePage.showActionSet(id); // assertEquals(page.getActionSets().length, totalBefore + 1); // // fActivePage.hideActionSet(id); // assertEquals(page.getActionSets().length, totalBefore); // // IActionSetDescriptor[] sets = page.getActionSets(); // boolean found = false; // for (int i = 0; i < sets.length; i++) // if (id.equals(sets[i].getId())) // found = true; // assertEquals(found, false); // } // // /** // * Return whether or not the editor exists in the current page. // * // * @param editor // * @return boolean // */ // private boolean hasEditor(IEditorPart editor) { // IEditorReference[] references = fActivePage.getEditorReferences(); // for (int i = 0; i < references.length; i++) { // if (references[i].getEditor(false).equals(editor)) // return true; // } // return false; // } // // /** // * Return whether or not the view exists in the current page. // * // * @param editor // * @return boolean // */ // private boolean hasView(IViewPart view) { // IViewReference[] references = fActivePage.getViewReferences(); // for (int i = 0; i < references.length; i++) { // if (references[i].getView(false).equals(view)) // return true; // } // return false; // } // // public void testStackOrder() { // WorkbenchPage page = (WorkbenchPage) fActivePage; // try { // IViewPart part1 = page.showView(MockViewPart.ID); // IViewPart part2 = page.showView(MockViewPart.ID2); // IViewPart part3 = page.showView(MockViewPart.ID3); // IViewPart part4 = page.showView(MockViewPart.ID4); // // IViewPart[] stack = page.getViewStack(part1); // assertTrue(stack.length == 4); // assertTrue(stack[0] == part4); // assertTrue(stack[1] == part3); // assertTrue(stack[2] == part2); // assertTrue(stack[3] == part1); // // page.activate(part2); // stack = page.getViewStack(part1); // assertTrue(stack.length == 4); // assertTrue(stack[0] == part2); // assertTrue(stack[1] == part4); // assertTrue(stack[2] == part3); // assertTrue(stack[3] == part1); // // page.activate(part1); // stack = page.getViewStack(part1); // assertTrue(stack.length == 4); // assertTrue(stack[0] == part1); // assertTrue(stack[1] == part2); // assertTrue(stack[2] == part4); // assertTrue(stack[3] == part3); // // page.activate(part3); // stack = page.getViewStack(part1); // assertTrue(stack.length == 4); // assertTrue(stack[0] == part3); // assertTrue(stack[1] == part1); // assertTrue(stack[2] == part2); // assertTrue(stack[3] == part4); // } catch (PartInitException e) { // fail(e.getMessage()); // } // } // // /** // * Test the VIEW_CREATE parameter for showView. Ensures that the created // * view is not the active part. // * // */ // public void testView_CREATE1() { // WorkbenchPage page = (WorkbenchPage) fActivePage; // try { // // page.setPerspective(WorkbenchPlugin.getDefault() // .getPerspectiveRegistry().findPerspectiveWithId( // "org.eclipse.ui.tests.api.ViewPerspective")); // // // create a part to be active // IViewPart activePart = page.showView(MockViewPart.ID); // IViewPart createdPart = page.showView(MockViewPart.ID2, null, // IWorkbenchPage.VIEW_CREATE); // // IViewPart[] stack = page.getViewStack(activePart); // assertEquals(2, stack.length); // // assertEquals(activePart, stack[0]); // assertEquals(createdPart, stack[1]); // // assertFalse(page.isPartVisible(createdPart)); // // assertEquals(activePart, page.getActivePart()); // } catch (PartInitException e) { // fail(e.getMessage()); // } // } // // /** // * Test the VIEW_CREATE parameter for showView. Ensures that the created // * view is not the active part and is not visible // */ // public void testView_CREATE2() { // WorkbenchPage page = (WorkbenchPage) fActivePage; // try { // // page.setPerspective(WorkbenchPlugin.getDefault() // .getPerspectiveRegistry().findPerspectiveWithId( // "org.eclipse.ui.tests.api.ViewPerspective")); // // // create a part to be active // IViewPart activePart = page.showView(MockViewPart.ID3); // IViewPart createdPart = page.showView(MockViewPart.ID2, null, // IWorkbenchPage.VIEW_CREATE); // // IViewPart[] stack = page.getViewStack(createdPart); // assertEquals(2, stack.length); // // assertEquals(page.findView(MockViewPart.ID), stack[0]); // assertEquals(createdPart, stack[1]); // // assertFalse(page.isPartVisible(createdPart)); // // assertEquals(activePart, page.getActivePart()); // } catch (PartInitException e) { // fail(e.getMessage()); // } // } // // /** // * Test the VIEW_CREATE parameter for showView. Ensures that the created // * view is not the active part and is visible. // */ // public void testView_CREATE3() { // WorkbenchPage page = (WorkbenchPage) fActivePage; // try { // // page.setPerspective(WorkbenchPlugin.getDefault() // .getPerspectiveRegistry().findPerspectiveWithId( // "org.eclipse.ui.tests.api.ViewPerspective")); // // // create a part to be active // IViewPart activePart = page.showView(MockViewPart.ID3); // IViewPart createdPart = page.showView(MockViewPart.ID4, null, // IWorkbenchPage.VIEW_CREATE); // // IViewPart[] stack = page.getViewStack(createdPart); // assertEquals(1, stack.length); // // assertEquals(createdPart, stack[0]); // // assertTrue(page.isPartVisible(createdPart)); // // assertEquals(activePart, page.getActivePart()); // } catch (PartInitException e) { // fail(e.getMessage()); // } // } // // /** // * Test the VIEW_VISIBLE parameter for showView, opening the view in the // * stack containing the active view. Ensures that the created view is not // * the active part and is not visible. // */ // public void testView_VISIBLE1() { // WorkbenchPage page = (WorkbenchPage) fActivePage; // try { // page.setPerspective(WorkbenchPlugin.getDefault() // .getPerspectiveRegistry().findPerspectiveWithId( // "org.eclipse.ui.tests.api.ViewPerspective")); // // // create a part to be active // IViewPart activePart = page.showView(MockViewPart.ID); // IViewPart createdPart = page.showView(MockViewPart.ID2, null, // IWorkbenchPage.VIEW_VISIBLE); // IViewPart[] stack = page.getViewStack(activePart); // assertEquals(2, stack.length); // // assertEquals(activePart, stack[0]); // assertEquals(createdPart, stack[1]); // // assertFalse(page.isPartVisible(createdPart)); // // assertEquals(activePart, page.getActivePart()); // } catch (PartInitException e) { // fail(e.getMessage()); // } // } // // /** // * Test the VIEW_VISIBLE parameter for showView, opening the view in its own // * stack. Ensures that the created view is not active part but is the top // * part in its stack. // */ // public void testView_VISIBLE3() { // WorkbenchPage page = (WorkbenchPage) fActivePage; // try { // page.setPerspective(WorkbenchPlugin.getDefault() // .getPerspectiveRegistry().findPerspectiveWithId( // "org.eclipse.ui.tests.api.ViewPerspective")); // // // create a part to be active // IViewPart activePart = page.showView(MockViewPart.ID3); // // IViewPart createdPart = page.showView(MockViewPart.ID4, null, // IWorkbenchPage.VIEW_VISIBLE); // IViewPart[] stack = page.getViewStack(createdPart); // assertEquals(1, stack.length); // // assertEquals(createdPart, stack[0]); // // assertTrue(page.isPartVisible(createdPart)); // // assertEquals(activePart, page.getActivePart()); // } catch (PartInitException e) { // fail(e.getMessage()); // } // } // // /** // * Test opening a perspective with a fast view. // */ // public void testOpenPerspectiveWithFastView() { // WorkbenchPage page = (WorkbenchPage) fActivePage; // // try { // fWin.getWorkbench().showPerspective( // PerspectiveWithFastView.PERSP_ID, fWin); // } catch (WorkbenchException e) { // fail("Unexpected WorkbenchException: " + e); // } // // assertEquals(page.getFastViews().length, 1); // assertEquals(page.getFastViews()[0].getId(), // "org.eclipse.ui.views.ResourceNavigator"); // assertEquals(page.getViewReferences().length, 1); // assertTrue(page.getViewReferences()[0].isFastView()); // // IPerspectiveDescriptor persp = page.getPerspective(); // // ICommandService commandService = (ICommandService) fWorkbench.getService(ICommandService.class); // Command command = commandService.getCommand("org.eclipse.ui.window.closePerspective"); // // HashMap parameters = new HashMap(); // parameters.put("org.eclipse.ui.window.closePerspective.perspectiveId", persp.getId()); // // ParameterizedCommand pCommand = ParameterizedCommand.generateCommand(command, parameters); // // IHandlerService handlerService = (IHandlerService) fWorkbench // .getService(IHandlerService.class); // try { // handlerService.executeCommand(pCommand, null); // } catch (ExecutionException e1) { // } catch (NotDefinedException e1) { // } catch (NotEnabledException e1) { // } catch (NotHandledException e1) { // } // // } // // /** // * Test opening a perspective with placeholders for multi instance views. // * The placeholders are added at top level (not in any folder). // * // * @since 3.1 // */ // public void testOpenPerspectiveWithMultiViewPlaceholdersAtTopLevel() { // WorkbenchPage page = (WorkbenchPage) fActivePage; // // try { // fWin.getWorkbench().showPerspective( // PerspectiveWithMultiViewPlaceholdersAtTopLevel.PERSP_ID, // fWin); // } catch (WorkbenchException e) { // fail("Unexpected WorkbenchException: " + e); // } // // PerspectiveState state = new PerspectiveState(page); // ArrayList partIds = state.getPartIds(null); // assertTrue(partIds.contains("*")); // assertTrue(partIds.contains(MockViewPart.IDMULT)); // assertTrue(partIds.contains(MockViewPart.IDMULT + ":secondaryId")); // assertTrue(partIds.contains(MockViewPart.IDMULT + ":*")); // } // // /** // * Test opening a perspective with placeholders for multi instance views. // * The placeholders are added in a placeholder folder. This is a regression // * test for bug 72383 [Perspectives] Placeholder folder error with multiple // * instance views // * // * @since 3.1 // */ // public void testOpenPerspectiveWithMultiViewPlaceholdersInPlaceholderFolder() { // WorkbenchPage page = (WorkbenchPage) fActivePage; // // try { // fWin // .getWorkbench() // .showPerspective( // PerspectiveWithMultiViewPlaceholdersInPlaceholderFolder.PERSP_ID, // fWin); // } catch (WorkbenchException e) { // fail("Unexpected WorkbenchException: " + e); // } // // PerspectiveState state = new PerspectiveState(page); // ArrayList partIds = state.getPartIds("placeholderFolder"); // assertTrue(partIds.contains("*")); // assertTrue(partIds.contains(MockViewPart.IDMULT)); // assertTrue(partIds.contains(MockViewPart.IDMULT + ":secondaryId")); // assertTrue(partIds.contains(MockViewPart.IDMULT + ":*")); // } // // /** // * Test opening a perspective with placeholders for multi instance views. // * The placeholders are added at top level (not in any folder). // * // * @since 3.1 // */ // public void testOpenPerspectiveWithMultiViewPlaceholdersInFolder() { // WorkbenchPage page = (WorkbenchPage) fActivePage; // // try { // fWin // .getWorkbench() // .showPerspective( // PerspectiveWithMultiViewPlaceholdersInFolder.PERSP_ID, // fWin); // } catch (WorkbenchException e) { // fail("Unexpected WorkbenchException: " + e); // } // // PerspectiveState state = new PerspectiveState(page); // ArrayList partIds = state.getPartIds("folder"); // assertTrue(partIds.contains("*")); // assertTrue(partIds.contains(MockViewPart.IDMULT)); // assertTrue(partIds.contains(MockViewPart.IDMULT + ":secondaryId")); // assertTrue(partIds.contains(MockViewPart.IDMULT + ":*")); // } // // /** // * Tests the getNewWizardShortcuts() method. // * // * @since 3.1 // */ // public void testGetNewWizardShortcuts() { // String[] shortcuts = fActivePage.getNewWizardShortcuts(); // assertNotNull(shortcuts); // assertEquals(0, shortcuts.length); // // IWorkbenchWindow win = openTestWindow(IDE.RESOURCE_PERSPECTIVE_ID); // IWorkbenchPage page = win.getActivePage(); // shortcuts = page.getNewWizardShortcuts(); // List shortcutList = Arrays.asList(shortcuts); // assertTrue(shortcutList.contains("org.eclipse.ui.wizards.new.folder")); // assertTrue(shortcutList.contains("org.eclipse.ui.wizards.new.file")); // } // // /** // * Tests the getShowViewShortcuts() method. // * // * @since 3.1 // */ // public void testGetShowViewShortcuts() { // String[] shortcuts = fActivePage.getShowViewShortcuts(); // assertNotNull(shortcuts); // assertEquals(0, shortcuts.length); // // IWorkbenchWindow win = openTestWindow(IDE.RESOURCE_PERSPECTIVE_ID); // IWorkbenchPage page = win.getActivePage(); // shortcuts = page.getShowViewShortcuts(); // List shortcutList = Arrays.asList(shortcuts); // assertTrue(shortcutList.contains(IPageLayout.ID_RES_NAV)); // assertTrue(shortcutList.contains(IPageLayout.ID_OUTLINE)); // assertTrue(shortcutList.contains(IPageLayout.ID_PROP_SHEET)); // assertTrue(shortcutList.contains(IPageLayout.ID_PROBLEM_VIEW)); // } // // /** // * Tests the getPerspectiveShortcuts() method. // * // * @since 3.1 // */ // public void testGetPerspectiveShortcuts() { // String[] shortcuts = fActivePage.getPerspectiveShortcuts(); // assertNotNull(shortcuts); // assertEquals(0, shortcuts.length); // // not much of a test // } // // /** // * Tests the getOpenPerspectives() method. // * // * @since 3.1 // */ // public void testGetOpenPerspectives() { // IPerspectiveDescriptor[] openPersps = fActivePage.getOpenPerspectives(); // assertEquals(1, openPersps.length); // assertEquals(EmptyPerspective.PERSP_ID, openPersps[0].getId()); // // IPerspectiveRegistry reg = fWorkbench.getPerspectiveRegistry(); // IPerspectiveDescriptor resourcePersp = reg // .findPerspectiveWithId(IDE.RESOURCE_PERSPECTIVE_ID); // fActivePage.setPerspective(resourcePersp); // openPersps = fActivePage.getOpenPerspectives(); // assertEquals(2, openPersps.length); // assertEquals(EmptyPerspective.PERSP_ID, openPersps[0].getId()); // assertEquals(IDE.RESOURCE_PERSPECTIVE_ID, openPersps[1].getId()); // // IPerspectiveDescriptor emptyPersp = reg // .findPerspectiveWithId(EmptyPerspective.PERSP_ID); // fActivePage.setPerspective(emptyPersp); // openPersps = fActivePage.getOpenPerspectives(); // assertEquals(2, openPersps.length); // assertEquals(EmptyPerspective.PERSP_ID, openPersps[0].getId()); // assertEquals(IDE.RESOURCE_PERSPECTIVE_ID, openPersps[1].getId()); // // fActivePage.closeAllPerspectives(false, false); // openPersps = fActivePage.getOpenPerspectives(); // assertEquals(0, openPersps.length); // // fActivePage.close(); // openPersps = fActivePage.getOpenPerspectives(); // assertEquals(0, openPersps.length); // } // // /** // * Tests the getSortedPerspectives() method. // * // * @since 3.1 // */ // public void testGetSortedPerspectives() { // IPerspectiveDescriptor[] openPersps = fActivePage // .getSortedPerspectives(); // assertEquals(1, openPersps.length); // assertEquals(EmptyPerspective.PERSP_ID, openPersps[0].getId()); // // IPerspectiveRegistry reg = fWorkbench.getPerspectiveRegistry(); // IPerspectiveDescriptor resourcePersp = reg // .findPerspectiveWithId(IDE.RESOURCE_PERSPECTIVE_ID); // fActivePage.setPerspective(resourcePersp); // openPersps = fActivePage.getSortedPerspectives(); // assertEquals(2, openPersps.length); // assertEquals(EmptyPerspective.PERSP_ID, openPersps[0].getId()); // assertEquals(IDE.RESOURCE_PERSPECTIVE_ID, openPersps[1].getId()); // // IPerspectiveDescriptor emptyPersp = reg // .findPerspectiveWithId(EmptyPerspective.PERSP_ID); // fActivePage.setPerspective(emptyPersp); // openPersps = fActivePage.getSortedPerspectives(); // assertEquals(2, openPersps.length); // assertEquals(IDE.RESOURCE_PERSPECTIVE_ID, openPersps[0].getId()); // assertEquals(EmptyPerspective.PERSP_ID, openPersps[1].getId()); // // fActivePage.closeAllPerspectives(false, false); // openPersps = fActivePage.getSortedPerspectives(); // assertEquals(0, openPersps.length); // // fActivePage.close(); // openPersps = fActivePage.getSortedPerspectives(); // assertEquals(0, openPersps.length); // } // // /** // * Tests the closePerspective method. // * // * @since 3.1 // */ // public void testClosePerspective() { // // TODO: Need to test variants with saveEditors==true // // IPerspectiveRegistry reg = fWorkbench.getPerspectiveRegistry(); // IPerspectiveDescriptor emptyPersp = reg // .findPerspectiveWithId(EmptyPerspective.PERSP_ID); // IPerspectiveDescriptor resourcePersp = reg // .findPerspectiveWithId(IDE.RESOURCE_PERSPECTIVE_ID); // // fActivePage.setPerspective(resourcePersp); // IPerspectiveDescriptor[] openPersps = fActivePage.getOpenPerspectives(); // assertEquals(2, openPersps.length); // // fActivePage.closePerspective(resourcePersp, false, false); // openPersps = fActivePage.getOpenPerspectives(); // assertEquals(1, openPersps.length); // assertEquals(EmptyPerspective.PERSP_ID, openPersps[0].getId()); // // fActivePage.closePerspective(emptyPersp, false, false); // assertEquals(fActivePage, fWin.getActivePage()); // page not closed // openPersps = fActivePage.getOpenPerspectives(); // assertEquals(0, openPersps.length); // // fActivePage.setPerspective(emptyPersp); // openPersps = fActivePage.getOpenPerspectives(); // assertEquals(1, openPersps.length); // // fActivePage.closePerspective(emptyPersp, false, true); // openPersps = fActivePage.getOpenPerspectives(); // assertEquals(0, openPersps.length); // assertNull(fWin.getActivePage()); // page closed // } // // /** // * Tests the closeAllPerspectives method. // * // * @since 3.1 // */ // public void testCloseAllPerspectives() { // // TODO: Need to test variants with saveEditors==true // // IPerspectiveRegistry reg = fWorkbench.getPerspectiveRegistry(); // IPerspectiveDescriptor emptyPersp = reg // .findPerspectiveWithId(EmptyPerspective.PERSP_ID); // IPerspectiveDescriptor resourcePersp = reg // .findPerspectiveWithId(IDE.RESOURCE_PERSPECTIVE_ID); // // fActivePage.setPerspective(resourcePersp); // IPerspectiveDescriptor[] openPersps = fActivePage.getOpenPerspectives(); // assertEquals(2, openPersps.length); // // fActivePage.closeAllPerspectives(false, false); // assertEquals(fActivePage, fWin.getActivePage()); // page not closed // openPersps = fActivePage.getOpenPerspectives(); // assertEquals(0, openPersps.length); // // fActivePage.setPerspective(emptyPersp); // openPersps = fActivePage.getOpenPerspectives(); // assertEquals(1, openPersps.length); // // fActivePage.closeAllPerspectives(false, true); // openPersps = fActivePage.getOpenPerspectives(); // assertEquals(0, openPersps.length); // assertNull(fWin.getActivePage()); // page closed // } // // /** // * Regression test for Bug 76285 [Presentations] Folder tab does not // * indicate current view. Tests that, when switching between perspectives, // * the remembered old part correctly handles multi-view instances. // */ // public void testBug76285() { // IWorkbenchPage page = fActivePage; // IPerspectiveDescriptor originalPersp = page.getPerspective(); // IPerspectiveDescriptor resourcePersp = PlatformUI.getWorkbench() // .getPerspectiveRegistry().findPerspectiveWithId( // IDE.RESOURCE_PERSPECTIVE_ID); // // test requires switching between two different perspectives // assertNotSame(originalPersp, resourcePersp); // // int n = 5; // IViewPart[] views = new IViewPart[n]; // for (int i = 0; i < n; ++i) { // try { // views[i] = page.showView(MockViewPart.IDMULT, Integer // .toString(i), IWorkbenchPage.VIEW_CREATE); // } catch (PartInitException e) { // fail(e.getMessage()); // } // } // assertEquals(5, page.getViews().length); // for (int i = 0; i < n; ++i) { // page.activate(views[i]); // page.setPerspective(resourcePersp); // assertFalse(page.getActivePart() instanceof MockViewPart); // page.setPerspective(originalPersp); // assertEquals(views[i], page.getActivePart()); // } // } // // /** // * Tests that IShowEditorInput.showEditorInput is called when a matching // * editor is found during openEditor, and is not called when a new editor is // * opened. // * // * @since 3.1 // */ // public void testShowEditorInput() throws Exception { // IWorkbenchPage page = fActivePage; // proj = FileUtil.createProject("testShowEditorInput"); // IFile file = FileUtil.createFile("a.mock1", proj); // MockEditorPart part1 = (MockEditorPart) IDE.openEditor(page, file); // assertFalse(part1.getCallHistory().contains("showEditorInput")); // // MockEditorPart part2 = (MockEditorPart) IDE.openEditor(page, file); // assertTrue(part1 == part2); // assertTrue(part2.getCallHistory().contains("showEditorInput")); // } // // /** // * Tests that the openEditor and findEditor variants that accepts match // * flags work as expected. // * // * @since 3.2 // */ // public void testOpenAndFindEditorWithMatchFlags() throws Exception { // IWorkbenchPage page = fActivePage; // proj = FileUtil.createProject("testOpenEditorMatchFlags"); // IFile file1 = FileUtil.createFile("a.mock1", proj); // IFile file2 = FileUtil.createFile("a.mock2", proj); // FileEditorInput input1 = new FileEditorInput(file1); // FileEditorInput input2 = new FileEditorInput(file2); // String id1 = MockEditorPart.ID1; // String id2 = MockEditorPart.ID2; // // // first editor (no match) // MockEditorPart part1 = (MockEditorPart) page.openEditor(input1, id1, // true, IWorkbenchPage.MATCH_INPUT); // assertNotNull(part1); // // // same input, same id, matching input (should match part1) // MockEditorPart part2 = (MockEditorPart) page.openEditor(input1, id1, // true, IWorkbenchPage.MATCH_INPUT); // assertTrue(part1 == part2); // // // same input, different id, matching input (should match part1) // MockEditorPart part3 = (MockEditorPart) page.openEditor(input1, id2, // true, IWorkbenchPage.MATCH_INPUT); // assertTrue(part1 == part3); // // // same input, different id, matching input and id (no match) // MockEditorPart part4 = (MockEditorPart) page.openEditor(input1, id2, // true, IWorkbenchPage.MATCH_INPUT | IWorkbenchPage.MATCH_ID); // assertNotNull(part4); // assertTrue(part4 != part1); // // // same input, same id, matching nothing (no match) // MockEditorPart part5 = (MockEditorPart) page.openEditor(input1, id1, // true, IWorkbenchPage.MATCH_NONE); // assertNotNull(part5); // assertTrue(part5 != part1); // assertTrue(part5 != part4); // // // different input, same id, matching id (should match part5 instead of // // part1, because it was active) // MockEditorPart part6 = (MockEditorPart) page.openEditor(input2, id1, // true, IWorkbenchPage.MATCH_ID); // assertTrue(part6 == part5); // // // different input, different id, matching input and id (no match) // MockEditorPart part7 = (MockEditorPart) page.openEditor(input2, id2, // true, IWorkbenchPage.MATCH_INPUT | IWorkbenchPage.MATCH_ID); // assertNotNull(part7); // assertTrue(part7 != part1); // assertTrue(part7 != part4); // assertTrue(part7 != part5); // // // At this point, there are 4 editors open: // // part1 (input1, id1), part4 (input1, id2), part5 (input1, id1), and // // part7 (input2, id2). // // with part7 active. // // // find with MATCH_NONE is always empty // IEditorReference[] refs = page.findEditors(input1, id1, // IWorkbenchPage.MATCH_NONE); // assertEquals(0, refs.length); // // // find input1 with MATCH_INPUT finds 3 editors: part1, part4 and part5 // // (in order) // refs = page.findEditors(input1, null, IWorkbenchPage.MATCH_INPUT); // assertEquals(3, refs.length); // assertEquals(part1, refs[0].getPart(true)); // assertEquals(part4, refs[1].getPart(true)); // assertEquals(part5, refs[2].getPart(true)); // // // find input2 with MATCH_INPUT finds 1 editor: part7 // refs = page.findEditors(input2, null, IWorkbenchPage.MATCH_INPUT); // assertEquals(1, refs.length); // assertEquals(part7, refs[0].getPart(true)); // // // find id1 with MATCH_ID finds 2 editors: part1 and part5 (in order) // refs = page.findEditors(null, id1, IWorkbenchPage.MATCH_ID); // assertEquals(2, refs.length); // assertEquals(part1, refs[0].getPart(true)); // assertEquals(part5, refs[1].getPart(true)); // // // find id2 with MATCH_ID finds 2 editors: part4 and part7 (with part7 // // first because it was active) // refs = page.findEditors(null, id2, IWorkbenchPage.MATCH_ID); // assertEquals(2, refs.length); // assertEquals(part7, refs[0].getPart(true)); // assertEquals(part4, refs[1].getPart(true)); // // // find input1 and id1 with MATCH_INPUT and MATCH_ID finds 2 editors: // // part1 and part5 (in order) // refs = page.findEditors(input1, id1, IWorkbenchPage.MATCH_INPUT // | IWorkbenchPage.MATCH_ID); // assertEquals(2, refs.length); // assertEquals(part1, refs[0].getPart(true)); // assertEquals(part5, refs[1].getPart(true)); // // // find input1 and id2 with MATCH_INPUT and MATCH_ID finds 1 editors: // // part4 // refs = page.findEditors(input1, id2, IWorkbenchPage.MATCH_INPUT // | IWorkbenchPage.MATCH_ID); // assertEquals(1, refs.length); // assertEquals(part4, refs[0].getPart(true)); // } //}